package com.medical.system.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.medical.system.common.Result;
import com.medical.system.mapper.SysDoctorMapper;
import com.medical.system.model.Doctor;
import com.medical.system.model.SysUser;
import com.medical.system.service.DoctorService;
import com.medical.system.vo.SysDoctorVo;
import org.springframework.stereotype.Service;

@Service
public class DoctorServiceImpl extends ServiceImpl<SysDoctorMapper, Doctor> implements DoctorService {

    /**
     * @ 方法描述 : 分页查询
     * @ 作者 : 风花雪月
     * @ 时间 : 2024/8/5 14:08
     * @ 参数 : [page, limit, sysDoctorVo]
     * @return: com.medical.system.common.Result
     **/
    @Override
    public Result selectPage(IPage<Doctor> doctorPage, SysDoctorVo sysDoctorVo) {
       IPage<Doctor> doctorIPage = this.baseMapper.selectPage(doctorPage, sysDoctorVo);
        return Result.build(doctorPage, 200, "获取成功！！！");
    }

    /**
     * @ 方法描述 : 添加医生
     * @ 作者 : 风花雪月
     * @ 时间 : 2024/8/5 14:08
     * @ 参数 : [doctor]
     * @return: com.medical.system.common.Result
     **/
    @Override
    public Result insertDoctor(Doctor doctor) {
        if (this.save(doctor)) {
            return Result.ok();
        }
        return Result.fail();
    }

    /**
     * @ 方法描述 : 删除医生
     * @ 作者 : 风花雪月
     * @ 时间 : 2024/8/5 14:09
     * @ 参数 : [doctorId]
     * @return: com.medical.system.common.Result
     **/
    @Override
    public Result deleteDoctor(Integer doctorId) {
        if (this.removeById(doctorId)) {
            return Result.ok();
        }
        return Result.fail();
    }

    /**
     * @ 方法描述 : 更新医生
     * @ 作者 : 风花雪月
     * @ 时间 : 2024/8/5 14:09
     * @ 参数 : [doctor]
     * @return: com.medical.system.common.Result
     **/
    @Override
    public Result updateDoctor(Doctor doctor) {
        if (this.updateById(doctor)) {
            return Result.ok();
        }
        return Result.fail();
    }

    /**
     * @ 方法描述 : 通过ID查询医生
     * @ 作者 : 风花雪月
     * @ 时间 : 2024/8/5 14:09
     * @ 参数 : [doctorId]
     * @return: com.medical.system.common.Result
     **/
    @Override
    public Result selectDoctorById(Integer doctorId) {
        Doctor doctor = this.baseMapper.selectById(doctorId);
        if (doctor == null || doctor.getId() == null) {
            return Result.fail();
        }
        return Result.ok(doctor);
    }

    /**
     * @ 方法描述 : 更新医生状态
     * @ 作者 : 风花雪月
     * @ 时间 : 2024/8/5 14:10
     * @ 参数 : [id, status]
     * @return: com.medical.system.common.Result
     **/
    @Override
    public Result upStatusDoctor(Integer id, Integer status) {
        Doctor doctor = this.baseMapper.selectById(id);
        doctor.setStatus(status);
        int i = this.baseMapper.updateById(doctor);
        if (i > 0) {
            return Result.ok();
        }
        return Result.fail();
    }
}
